# -*- coding: UTF-8 -*-

# 登录相关的测试
# 1 密码错误
# 2 正常登录
# 3 修改自己的密码

from odoorpc import rpc


# 测试密码错误时的情况
def test_auth_error():
    db = 'T1'
    login = 'admin'
    password = 'wrong password'

    try:
        res = rpc.web.session.authenticate(
            db=db, login=login, password=password)
    except Exception as e:
        print('test_authenticate error', e)
        # odoo 返回的 error 是一个 dict
        # {
        #   code: 200
        #   message: 'Odoo Server Error'
        #   data: {
        #     name: 'odoo.exceptions.AccessDenied' # 可用于做错误类型判断
        #     debug: 'odoo 提供的详细debug 信息'
        #     message: 'Access Denied'
        #     arguments: ['Access Denied']
        #   }
        # }

        # error.data.name 可用于做错误类型判断
        # 对于登录密码错误 值为  'odoo.exceptions.AccessDenied'
        pass


# 正常登录情况
# 登录成功后, 底层 rpc 中 自动存储 session_info
#
def test_authenticate():
    # 登录接口,
    # 调用该接口后, rpc 中 自动存储 session_info
    # 因此 前端无需 处理 该接口的返回值
    db = 'T1'
    login = 'admin'
    password = '123456'

    res = rpc.web.session.authenticate(db=db, login=login, password=password)
    # print('test_authenticate res', res)

    # # 读取 本地暂存的 session 信息
    # info = rpc.web.session.session_info
    # print('test_authenticate info', info)

    # # 读取本地 暂存的 odoo 版本号
    server_version = rpc.web.session.server_version
    print('test_authenticate server_version', server_version)

    # # 读取本地 暂存的 当前公司
    current_company_id = rpc.web.session.current_company_id
    print('test_authenticate current_company_id', current_company_id)

    # # 读取本地 暂存的 公司 ids
    allowed_company_ids = rpc.web.session.allowed_company_ids
    print('test_authenticate allowed_company_ids', allowed_company_ids)

    # 读取本地 暂存的 context. 后续 调用其他接口用的到
    context = rpc.web.session.context
    print('test_authenticate context', context)


def test_get_session_info():
    # 登录后, 刷新页面. 重新构建 rpc的信息
    res = rpc.web.session.get_session_info()
    print('get_session_info', res)


def test_session_check():
    # 页面跳转时, 检查 session 是否超时
    res = rpc.web.session.check()
    print('test_session_check', res)


def test_session_destroy():
    # 注销
    res = rpc.web.session.destroy()
    print('test_session_destroy', res)
